A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by any one of the patent documents or the patent disclosure, as it appears in the patent and trademark office, patent file or records, but otherwise reserves all copyrights whatsoever.
1. Field of the Invention
The invention relates to telecommunications switching systems and, more particularly, the development and structure of process control software for telecommunications switching systems.
2. Description of the Related Art
The development of software architectural structures and application programs for stored program controlled telecommunications switching systems has historically been a complex and time-consuming task. The process requires many steps ranging from the development of functional specifications defining the operation and interaction of the services to be provided to the testing of the actual real-time code in the hardware within which the system is to run. Development of such software architectures has also required the interaction of a number of different developers each working in different aspects of the development and requiring the coordination of multiple activities at each step along the way in the development process. Thus, bringing to market new software systems for implementing user demand driven functions and features has been very expensive and such an arduous and time-consuming process that by the time systems are designed, developed, tested and commercially implemented in the marketplace, the user demand has often changed to still newer requirements.
One of the principal considerations in the development of any software system is a selection of the method of programming to be employed in constructing the system. Well known prior art methods of programming include: process-oriented programming with languages such as "ADA" or "PASCAL"; object-oriented programming with languages such as "C++" or "SMALLTALK"; and declarative programming with languages such as "PROLOG" or "LISP". None of these languages contains the full set of features desirable for developing telecommunications switch software. For example, the process-oriented programming language concept provides a good understanding and a good definition of the subject to be programmed, but, it gives very limited support for structuring and defining actions or predicates within the process. When programming the actions within a process, the designer is required to supply a great number of individual details within the application software. Similarly, while the PASCAL/ADA generation of programming languages gives some support to defining and handling of data, the programmer is still required to do a great deal of work on a detail level which has very little to do with the actual application being produced.
Even the latest object-oriented programming methods have their limitations. Such object-oriented methods of programming have concentrated on various techniques to define and inherit objects and on how to document objects. Although these techniques make a significant contribution in the case of developing programs that contain a large number of objects to be defined and handled, many problems related to clarity and structure occur when a program is itself defined as an object.
In process control programs such as those for telecommunications systems, however, the program entity is always the subject which acts and directs the activities within the system. The objects in a telecommunications process program system are basically of two types:
(1) All such program systems have internal objects defined in terms of data upon which the programs operate. These objects are the software systems' reality and the data is the static picture of the real world which the programs manipulate. PA1 (2) All real time and process control systems, however, also operate on dynamic objects outside the program systems. Examples of such dynamic objects are images on a display screen or telephones and trunks in a telecommunication system. These program systems will also include the dynamic objects as being represented by data objects.
The object-oriented programming technique of encapsulating actions together with data and defining all of it as an object is a distinct advantage if the program is a routine which is closely related to its objects. Examples of such routines are found in display screen presentation systems as well as in the line interface parts of a telecommunications system. If, however, the control programs in such a process control software system are all defined as objects, certain negative effects are also produced. First, the control programs become fragmented and very complex interactions and relationships become necessary between the objects. Such a result requires an overlay control structure and in known object-based telecommunication systems, complex C.C.I.T.T. specification design language (SDL) flow charts have been required to describe such control structures. Moreover, the dynamic relationships between the objects are still very difficult to describe and to understand even with the use of such flow charts. Second, when no entities in the control software system are defined as a subject, any explanatory model becomes inherently defective. The program actions, that is, its predicates, become bundled together with the objects, thus rendering both the objects and the actions very difficult to locate. This makes almost impossible the organization of actions within process control systems into logical groups. Further, designers are unable to structure applications in a natural way that would be both highly understandable to anyone viewing the organization and easy for designers to work with.
The latest generation of declarative programming languages such as PROLOG and LISP are very efficient and reduce the work of software design and programming because: (a) all programming can be done in symbolic form; and (b) the concept of predicates and a whole new set of powerful instructions have been included within those languages. The use of such languages dramatically reduces both the number of details a programmer needs to be concerned with and the importance of program encapsulation. The real disadvantage of utilizing declarative languages in process control and real time systems such as stored programmed control telecommunications switching systems, is their insufficient real time performance and their inability to handle parallelism.
Many of the newer declarative or object oriented programming languages have been used to allow programmers to perform rapid prototyping of functions or programs. Rapid prototyping techniques have a number of recognized advantages that flow from the ability to incrementally design and develop an application or a system. Potentially costly design errors can be detected and corrected earlier in the development process; individual aspects of a system can be implemented and tested very quickly; lengthy test and/or implementation phases can be avoided; and fast prototype development allows designers to explore a number of options with respect to an application or function. Many other advantages to prototyping exist as well.
Rapid prototyping techniques have benefits in the context of telecommunications systems as well. Until now, however, the techniques have had several drawbacks due to the real-time nature of the processing activities that occur in telecommunications systems and the parallel nature of these operations. The system of the present invention includes certain aspects that extend previously known prototyping methods and capabilities so that rapid prototyping can effectively be used in connection with telecommunications systems. Experiments in the use of prototyping techniques in connection with telecommunications systems are described in "Using Prolog for Rapid Prototyping of Telecommunication Systems," J. L. Armstrong and M. C. Williams, Seventh International Conference on Software Engineering for Telecommunication Switching Systems, Jul. 3-6, 1989, Bournemouth, and in "Experiments with Programming Languages and Techniques for Telecommunications Applications," B. Dacker, N. Elshiewg, P. Hedeland, C-W Welin, M. Williams, Sixth Int'l Conference on Software Engineering for Telecommunication Switching Systems, Apr. 14-18, 1986, Eindhoven, which are hereby incorporated herein by reference.
The development of the declarative language ERLANG has essentially solved these two problems allowing the introduction of process control concept into the world of declarative languages. The basic concepts of the ERLANG language are described in the article "ERLANG: An Experimental Telephony Programming Language," Proceedings, XIII International Switching Symposium, Vol. III, pp. 48 (1990), which is hereby incorporated herein by reference. A more detailed treatment is found in the "Erlang User's Guide & Reference Manual" and the "Erlang BIF Guide" which are incorporated herein as Attachment A. The use of such a language enables the construction of real time process control software systems in accordance with the system of the present invention.